﻿using Company.Axis;
using Company.IO;

namespace Company.Config
{
    /// <summary>
    /// 配置提供者,提供所有配置和配置服务
    /// </summary>
    public class ConfigProvider
    {
        #region 配置
        // 仅提供轴的个数和名称配置，不包含轴的运动参数配置.
        public AxesConfig AxesConfig { get; set; }
        // 系统配置
        public SystemConfig SystemConfig { get; set; }
        // IO配置
        public IOConfig IoConfig { get; set; }
        #endregion
        #region 配置服务
        // 轴配置服务
        public ConfigService<AxesConfig> AxesConfigService { get; set; }
        // 系统配置服务
        public ConfigService<SystemConfig> SystemConfigService { get; set; }
        // IO配置服务
        public ConfigService<IOConfig> IoConfigService { get; set; }
        #endregion
        #region 依赖注入
        public ConfigProvider(ConfigService<AxesConfig> axesConfigService,
                              ConfigService<SystemConfig> systemConfigService,
                              ConfigService<IOConfig> ioConfigService)
        {
            // 注入服务
            AxesConfigService = axesConfigService;
            SystemConfigService = systemConfigService;
            IoConfigService = ioConfigService;
            // 初始化加载XML文件
            AxesConfig = AxesConfigService.GetFromXmlFile(ProfilePaths.AxesXmlConfigFilePath);
            SystemConfig = SystemConfigService.GetFromXmlFile(ProfilePaths.SystemXmlConfigFilePath);
            IoConfig = IoConfigService.GetFromXmlFile(ProfilePaths.IOXmlConfigFilePath);
        }
        #endregion
    }
}
